Flight of the CodeMonkeys Help File

Hello, dear reader. You are now safely outside of the story. So, let me give you some directions in a more direct manner.

This is an interactive story with actual running code. Yes, actual code. It’s in something called a Jupyter Notebook, running on Google Drive.  Don’t worry, you don’t have to know about Jupyter Notebooks to play with this. 

To get the full effect of this story, you need to either enter “Playground Mode” (see the button in the upper left hand corner of the story) or copy it to your Google Drive. That way, you can change the code and see what happens. Actually, you can change the narrative text, too, especially if you have better ideas!  (See this license: https://www.gnu.org/licenses/agpl-3.0.en.html)

Playground Mode:
In this mode, you can make changes to the code, but Google will not save them. 
So each time you reload the page, you start the story over from scratch.

Copy to Google Drive:
In this mode, you can make changes to the code and Google will save them.  However, if you wanted to start over you’d have to go back to make another copy of the story (or open it in Playground Mode). 

Your Task:
Playing the part of a codemonkey, or code worker, for the System, your job is to make  corrections to the code as directed in the numbered instructions in text part of the story.

Or not. 

Maybe you want to subvert the System.  Maybe someone in the story will give you alternatives....

In any event, your instructions from the System, come in bold in a numbered list.  Later on, the narrator can also communicate with others through a chat tool.

How to Play:
Each time you find a piece of code, you should make the correction or just compile it by pressing the Play button.
 
To find the Play button, hover over the [  ] beside the code.

Some of the code is hidden. You should still press the Play button next to these sections. To see that code, you just double clock on the box.

You can (and are encouraged to) make other changes to the code, including the changes the narrator suggests or those suggested by other characters, such as the Resistance.

Pesky Python:
Python is a finicky language.  As a character in the story says, “White space is meaningful.”  That means, when you see something indented, it’s indented for a reason (typically in increments of 4 spaces).  So if there’s a conditional statement, it’s resulting action will be indented.

if d2 == "never":
  print (h1)

Those are 4 spaces before the print statement, not just a tab.

So, be mindful of the number of spaces in your indent. Basically, Python uses indents the way other programming language us {  }.  (Although, Python uses them, too.)

IRL Conversations
IRL is the text messaging system in this storyworld.

To chat with other players, you can press the Play button next to their contact section.  You can talk to as many of the other characters as you’d like, and these conversations are replayable, merely by pressing the Play button again. 

Note: If you press the Play button in the middle of a conversation, you may get an error message, so just press it again. 

Starting Over
Remember: In playground mode, to start the story over, just reload the page. That should reset the story. However, if you copied the story to your drive, you may need to make a new copy of the original.

That’s all for now.  Go back to that story, and don’t be afraid to play around.

Spoilers below.

Spoilery Walkthrough
S
P
O
I
L
E
R
S
*
*
*
*
*
*
*
*
*
*
*
*
*
Less of a walkthrough and more notes and suggestions
 This game is an experiment with putting live code into a game, where the CHOICE of the game is not which path you take, but how you alter this code.

It is possible to read the story all the way through by just pressing compile at every point. However, the little interactive fiction mini game in the middle of the story and the conversations will hang until you play them through to their end. In other words, they will wait for input.

There’s no right way to interact with this story.
The main plot asks you to pick a side.  You can choose to either follow the System’s instructions for changing the code or follow the Resistance, or some combination of the two.

Also, there’s no definitive truth in this story.  Each playthrough should generate a unique combination of truths that you’ll have to sort out. Sound familiar?

The Documentation:
This is the legendary holy writ of this storyworld; however, our narrator does not know how to access it.  Marta gives the basic trick, but to access the Documentation, you must follow the Resistance’s code in Task 298924, which basically reverses the strings and chooses one randomly.  In other words, you have to paste those lines of code (without the >) into one of the blocks and then press Play.

IRL: Chatting in Story
The IRL chat calls can take the story in a variety of directions, so give these some time.  They have been purposefully obfuscated so you won’t be tempted to just read through the lines of dialogue. But you can read them if you want.

In these dialogues, the story spins out in various branches:

The Resistance can give you instructions on how to take down the System or perhaps give you relationship advice.  Marta may turn out to be a lover or a Resistance fighter or maybe an autonomous agent, a mere chatbot.  Your mum, or her caretaker, can offer you a chance to put her at ease or charge her up. The System can help you turn in the Resistance, doing your job, or merely chat with you. You might even find out you’re in a VR.

Whatever path you take in the conversations decides what is real in that particular playthrough.

Re-read these to see the various paths.

FleaPicker
This code takes over the exception or error catching mechanism of the Jupyter Notebook.  That means it will not tell you in detail what your errors are.  On the other hand, it will start counting even the errors you commit in the code itself toward your overall errors.  In other words, while early code checks to see if you’ve made errors by not following its directions, this code keeps track of when you actually break the code by making an error that keeps it from compiling. 

Ways to Oppose the System
You can do what the Resistance tells you to do.
You can do the opposite of what the System tells you to do
	for example, setting a variable to a lower number rather than a higher one.
You can rewrite the variable names (but you might break the code, of course)
You can add code comments (since the System can’t read these)
You can write your own functions
You change the Documentation
Or dream up your own way, like working very slowly.
Ways to Oppose the Resistance
You can contact the System and turn them in
You can do the opposite of what they request
You can ignore their requests
You can post messages about them in the code
You can expose them in code comments or in the Documentation.

Alternative play
Or, since this is basically a Google Doc, you could copy the game to your drive and make your own game out of it. Then share it with me, so I can play!

Thanks!
I owe a lot to the play-testers listed in the code, all of whom made recommendations, but special thanks goes to John Murray and Todd Millstein, whose insights and suggestions brought this story to life.  And thanks to you, too!